MAYBE 2.207 H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/empty.hs
H-Termination of the given Haskell-Program with start terms could not be shown:



HASKELL
  ↳ LR

mainModule Main
  ((basicIORun :: IO a  ->  IOFinished a) :: IO a  ->  IOFinished a)

module Main where
  import qualified Prelude



Lambda Reductions:
The following Lambda expression
\xHugs_Catch (a xf1 f2 s

is transformed to
hugs_catch0 a f1 f2 s x = Hugs_Catch (a xf1 f2 s



↳ HASKELL
  ↳ LR
HASKELL
      ↳ CR

mainModule Main
  ((basicIORun :: IO a  ->  IOFinished a) :: IO a  ->  IOFinished a)

module Main where
  import qualified Prelude



Case Reductions:
The following Case expression
case primCatchException (catch' m) of
 Left exn → f1 exn
 Right (Hugs_Return a) → s a
 Right (Hugs_Error e) → f2 e
 Right (Hugs_ForkThread a b) → Hugs_ForkThread (Hugs_Catch a f1 f2 sb
 Right (Hugs_YieldThread a) → Hugs_YieldThread (Hugs_Catch a f1 f2 s)
 Right (Hugs_BlockThread a b) → Hugs_BlockThread (hugs_catch0 a f1 f2 sb
 Right r → r

is transformed to
hugs_catch1 f1 s f2 (Left exn) = f1 exn
hugs_catch1 f1 s f2 (Right (Hugs_Return a)) = s a
hugs_catch1 f1 s f2 (Right (Hugs_Error e)) = f2 e
hugs_catch1 f1 s f2 (Right (Hugs_ForkThread a b)) = Hugs_ForkThread (Hugs_Catch a f1 f2 sb
hugs_catch1 f1 s f2 (Right (Hugs_YieldThread a)) = Hugs_YieldThread (Hugs_Catch a f1 f2 s)
hugs_catch1 f1 s f2 (Right (Hugs_BlockThread a b)) = Hugs_BlockThread (hugs_catch0 a f1 f2 sb
hugs_catch1 f1 s f2 (Right r) = r



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
HASKELL
          ↳ BR

mainModule Main
  ((basicIORun :: IO a  ->  IOFinished a) :: IO a  ->  IOFinished a)

module Main where
  import qualified Prelude



Replaced joker patterns by fresh variables and removed binding patterns.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
HASKELL
              ↳ COR

mainModule Main
  ((basicIORun :: IO a  ->  IOFinished a) :: IO a  ->  IOFinished a)

module Main where
  import qualified Prelude



Cond Reductions:
The following Function with conditions
undefined 
 | False
 = undefined

is transformed to
undefined  = undefined1

undefined0 True = undefined

undefined1  = undefined0 False



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
HASKELL
                  ↳ LetRed

mainModule Main
  ((basicIORun :: IO a  ->  IOFinished a) :: IO a  ->  IOFinished a)

module Main where
  import qualified Prelude



Let/Where Reductions:
The bindings of the following Let/Where expression
hugs_catch1 f1 s f2 (primCatchException (catch' m))
where 
catch' (Hugs_Catch m' f1' f2' s') = catch' (hugs_catch m' f1' f2' s')
catch' x = x
hugs_catch0 a f1 f2 s x = Hugs_Catch (a xf1 f2 s
hugs_catch1 f1 s f2 (Left exn) = f1 exn
hugs_catch1 f1 s f2 (Right (Hugs_Return a)) = s a
hugs_catch1 f1 s f2 (Right (Hugs_Error e)) = f2 e
hugs_catch1 f1 s f2 (Right (Hugs_ForkThread a b)) = Hugs_ForkThread (Hugs_Catch a f1 f2 sb
hugs_catch1 f1 s f2 (Right (Hugs_YieldThread a)) = Hugs_YieldThread (Hugs_Catch a f1 f2 s)
hugs_catch1 f1 s f2 (Right (Hugs_BlockThread a b)) = Hugs_BlockThread (hugs_catch0 a f1 f2 sb
hugs_catch1 f1 s f2 (Right r) = r

are unpacked to the following functions on top level
hugs_catchCatch' (Hugs_Catch m' f1' f2' s') = hugs_catchCatch' (hugs_catch m' f1' f2' s')
hugs_catchCatch' x = x

hugs_catchHugs_catch0 a f1 f2 s x = Hugs_Catch (a xf1 f2 s

hugs_catchHugs_catch1 f1 s f2 (Left exn) = f1 exn
hugs_catchHugs_catch1 f1 s f2 (Right (Hugs_Return a)) = s a
hugs_catchHugs_catch1 f1 s f2 (Right (Hugs_Error e)) = f2 e
hugs_catchHugs_catch1 f1 s f2 (Right (Hugs_ForkThread a b)) = Hugs_ForkThread (Hugs_Catch a f1 f2 sb
hugs_catchHugs_catch1 f1 s f2 (Right (Hugs_YieldThread a)) = Hugs_YieldThread (Hugs_Catch a f1 f2 s)
hugs_catchHugs_catch1 f1 s f2 (Right (Hugs_BlockThread a b)) = Hugs_BlockThread (hugs_catchHugs_catch0 a f1 f2 sb
hugs_catchHugs_catch1 f1 s f2 (Right r) = r



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
HASKELL
                      ↳ Narrow
                      ↳ Narrow

mainModule Main
  (basicIORun :: IO a  ->  IOFinished a)

module Main where
  import qualified Prelude



Haskell To QDPs


↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
QDP
                            ↳ NonTerminationProof
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_toObj(wu10, ba) → new_toObj(wu10, ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

new_toObj(wu10, ba) → new_toObj(wu10, ba)

The TRS R consists of the following rules:none


s = new_toObj(wu10, ba) evaluates to t =new_toObj(wu10, ba)

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from new_toObj(wu10, ba) to new_toObj(wu10, ba).





↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
QDP
                            ↳ NonTerminationProof
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_fromObj(wu80, ba) → new_fromObj(wu80, ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

new_fromObj(wu80, ba) → new_fromObj(wu80, ba)

The TRS R consists of the following rules:none


s = new_fromObj(wu80, ba) evaluates to t =new_fromObj(wu80, ba)

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from new_fromObj(wu80, ba) to new_fromObj(wu80, ba).





↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
QDP
                            ↳ QDPSizeChangeProof
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_psPs(:(wu90, wu91), wu80) → new_psPs(wu91, wu80)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
QDP
                            ↳ NonTerminationProof
                          ↳ QDP
                          ↳ QDP
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_hugs_catchHugs_catch1(wu81, wu83, wu82, wu80) → new_hugs_catchHugs_catch1(wu81, wu83, wu82, wu80)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

new_hugs_catchHugs_catch1(wu81, wu83, wu82, wu80) → new_hugs_catchHugs_catch1(wu81, wu83, wu82, wu80)

The TRS R consists of the following rules:none


s = new_hugs_catchHugs_catch1(wu81, wu83, wu82, wu80) evaluates to t =new_hugs_catchHugs_catch1(wu81, wu83, wu82, wu80)

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from new_hugs_catchHugs_catch1(wu81, wu83, wu82, wu80) to new_hugs_catchHugs_catch1(wu81, wu83, wu82, wu80).





↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
QDP
                            ↳ UsableRulesProof
                          ↳ QDP
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_loop(ba) → new_loop(ba)

The TRS R consists of the following rules:

new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80) → new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80)
new_hugs_catch(wu80, wu81, wu82, wu83) → new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80)
new_psPs0([], wu80) → :(wu80, [])
new_psPs0(:(wu90, wu91), wu80) → :(wu90, new_psPs0(wu91, wu80))

The set Q consists of the following terms:

new_psPs0([], x0)
new_hugs_catch(x0, x1, x2, x3)
new_hugs_catchHugs_catch10(x0, x1, x2, x3)
new_psPs0(:(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ UsableRulesProof
QDP
                                ↳ QReductionProof
                          ↳ QDP
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_loop(ba) → new_loop(ba)

R is empty.
The set Q consists of the following terms:

new_psPs0([], x0)
new_hugs_catch(x0, x1, x2, x3)
new_hugs_catchHugs_catch10(x0, x1, x2, x3)
new_psPs0(:(x0, x1), x2)

We have to consider all minimal (P,Q,R)-chains.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.

new_psPs0([], x0)
new_hugs_catch(x0, x1, x2, x3)
new_hugs_catchHugs_catch10(x0, x1, x2, x3)
new_psPs0(:(x0, x1), x2)



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ UsableRulesProof
                              ↳ QDP
                                ↳ QReductionProof
QDP
                                    ↳ NonTerminationProof
                          ↳ QDP
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_loop(ba) → new_loop(ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

new_loop(ba) → new_loop(ba)

The TRS R consists of the following rules:none


s = new_loop(ba) evaluates to t =new_loop(ba)

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from new_loop(ba) to new_loop(ba).





↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
QDP
                            ↳ DependencyGraphProof
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_loop0(Hugs_Catch(wu80, wu81, wu82, wu83), wu9, ba) → new_loop0(new_hugs_catch(wu80, wu81, wu82, wu83), wu9, ba)
new_loop0(Hugs_ForkThread(wu80, wu81), wu9, ba) → new_loop0(wu80, :(wu81, wu9), ba)

The TRS R consists of the following rules:

new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80) → new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80)
new_hugs_catch(wu80, wu81, wu82, wu83) → new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80)

The set Q consists of the following terms:

new_hugs_catch(x0, x1, x2, x3)
new_hugs_catchHugs_catch10(x0, x1, x2, x3)

We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 1 less node.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
QDP
                                ↳ UsableRulesProof
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_loop0(Hugs_ForkThread(wu80, wu81), wu9, ba) → new_loop0(wu80, :(wu81, wu9), ba)

The TRS R consists of the following rules:

new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80) → new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80)
new_hugs_catch(wu80, wu81, wu82, wu83) → new_hugs_catchHugs_catch10(wu81, wu83, wu82, wu80)

The set Q consists of the following terms:

new_hugs_catch(x0, x1, x2, x3)
new_hugs_catchHugs_catch10(x0, x1, x2, x3)

We have to consider all minimal (P,Q,R)-chains.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ UsableRulesProof
QDP
                                    ↳ QReductionProof
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_loop0(Hugs_ForkThread(wu80, wu81), wu9, ba) → new_loop0(wu80, :(wu81, wu9), ba)

R is empty.
The set Q consists of the following terms:

new_hugs_catch(x0, x1, x2, x3)
new_hugs_catchHugs_catch10(x0, x1, x2, x3)

We have to consider all minimal (P,Q,R)-chains.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.

new_hugs_catch(x0, x1, x2, x3)
new_hugs_catchHugs_catch10(x0, x1, x2, x3)



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ CR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ LetRed
                    ↳ HASKELL
                      ↳ Narrow
                        ↳ AND
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                          ↳ QDP
                            ↳ DependencyGraphProof
                              ↳ QDP
                                ↳ UsableRulesProof
                                  ↳ QDP
                                    ↳ QReductionProof
QDP
                                        ↳ QDPSizeChangeProof
                      ↳ Narrow

Q DP problem:
The TRS P consists of the following rules:

new_loop0(Hugs_ForkThread(wu80, wu81), wu9, ba) → new_loop0(wu80, :(wu81, wu9), ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:


Haskell To QDPs